package com.durian.base.update.proxy

import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment

interface IUpdateRequest : IUpdateInstallController, IUpdateVersionController, IUpdateDownloader {
    /**
     * 发起检查更新
     */
    fun update(fragment: Fragment): IUpdateRequest

    /**
     * 发起检查更新
     */
    fun update(activity: AppCompatActivity): IUpdateRequest

    /**
     * 设置版本请求检查器
     */
    fun setHttpRequest(httpRequest: IHttpRequest): IUpdateRequest
    fun getHttpRequest(): IHttpRequest?

    /**
     * 设置版本更新提示检查器
     */
    fun setUpdateChecker(updateChecker: IUpdateChecker): IUpdateRequest
    fun getUpdateChecker(): IUpdateChecker?

    /**
     * 设置版本更新监听
     */
    fun setUpdateListener(updateListener: IUpdateListener): IUpdateRequest
    fun getUpdateListener(): IUpdateListener?

    /**
     * 设置版本更新配置
     */
    fun setUpdateConfig(updateConfig: IUpdateConfig): IUpdateRequest
    fun getUpdateConfig(): IUpdateConfig?

    /**
     * 设置下载器
     */
    fun setUpdateDownloader(updateDownloader: IUpdateDownloader): IUpdateRequest
    fun getUpdateDownloader(): IUpdateDownloader?

    /**
     * 设置安装器
     */
    fun setUpdateInstaller(updateInstaller: IUpdateInstaller): IUpdateRequest
    fun getUpdateInstaller(): IUpdateInstaller?

    fun getUpdateVersionController(): IUpdateVersionController?
    fun getUpdateInstallController(): IUpdateInstallController?

    fun destroy()
}